package com.zh.note.huawei.onehundred.众数和中位数or查找众数及中位数;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @Author: zhanghuan
 * @date: 2023/9/4 13:47
 * @description: create it
 * 5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39
 */
public class Main {
    public static void main(String[] args) {
        // Scanner sc = new Scanner(System.in);
        // String line = sc.nextLine();
        String line = "5 1 5 3 5 2 5 5 7 6 7 3 7 11 7 55 7 9 98 9 17 9 15 9 9 1 39";
        int[] nums = Arrays.stream(line.split(" ")).mapToInt(Integer::parseInt).toArray();

        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            map.put(num, map.getOrDefault(num, 0) + 1);
        }
        // 找到出现次数最多的次数
        Integer maxValue = map.values().stream().max(Integer::compareTo).get();
        // int maxValue = map.values().stream().mapToInt(Integer::intValue).max().getAsInt();
        // 找到出现次数最多的有哪些数
        List<Integer> collect = map.keySet().stream().filter(k -> maxValue.equals(map.get(k)))
                .sorted(Integer::compareTo).collect(Collectors.toList());
        int result = 0;
        if (collect.size() % 2 == 0) { // 是偶数个
            // 中间那两个元素之和 除以2
            result = (collect.get(collect.size() / 2) + collect.get(collect.size() / 2 - 1)) / 2;
            System.out.println(result);

        } else {
            //中间的那个
            result = collect.get(collect.size() / 2);
            System.out.println(result);
        }

    }
}
